找传奇、传世资源到传世资源站!

c#利用钩子屏蔽键盘,防止用户切出

8.5玩家评分(1人评分)
下载后可评
介绍 评论 失效链接反馈

本实例利用钩子实现对键盘win e,win d,alt tab,ctrl alt del等快捷键的屏蔽,在锁屏工具上面用的较多,使用户不能切出应用程序,这个是我做考试系统防止用户切出设计的demo,在地址栏输入123然后点前往可以取消键盘屏蔽。
c#利用钩子屏蔽键盘,防止用户切出 桌面应用界面/GUI-第1张
        public delegate int HookProc(int nCode, int wParam, IntPtr lParam);//定义全局钩子过程委托,以防被回收(钩子函数原型)
        HookProc KeyBoardProcedure;
        //定义键盘钩子的相关内容,用于截获键盘消息
        static int hHook = 0;//钩子函数的句柄
        public const int WH_KEYBOARD = 13;
        //钩子结构函数
        public struct KeyBoardHookStruct
        {
            public int vkCode;
            public int scanCode;
            public int flags;
            public int time;
            public int dwExtraInfo;
        }
        //安装键盘钩子
        public void HookStart()
        {
            if (hHook == 0)
            {
                //实例化一个HookProc对象
                KeyBoardProcedure = new HookProc(Form2.KeyBoardHookProc);
                //创建线程钩子
                hHook = Win32API.SetWindowsHookEx(WH_KEYBOARD, KeyBoardProcedure, Win32API.GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);
                //如果设置线程钩子失败
                if (hHook == 0)
                {
                    HookClear();
                }
            }
        }
        //取消钩子
        public void HookClear()
        {
            bool rsetKeyboard = true;
            if (hHook != 0)
            {
                rsetKeyboard = Win32API.UnhookWindowsHookEx(hHook);
                hHook = 0;
            }
            if (!rsetKeyboard)
            {
                throw new Exception("取消钩子失败!");
            }
        }

评论

发表评论必须先登陆, 您可以 登陆 或者 注册新账号 !


在线咨询: 问题反馈
客服QQ:174666394

有问题请留言,看到后及时答复